X = 11


def f():
    print(X)


def g():
    X = 22
    print(X)


class C:
    X = 33

    def m(self):
        X = 44
        self.X = 55


if __name__ == "__main__":
    print(X)        # 11: модуль (за пределами файла manynames.X)
    f()             # 11: глобальная
    g()             # 22: локальная
    print(X)        # 11: переменная модуля не изменилась
    obj = C()       # Создать экземпляр
    print(obj.X)    # 33: переменная класса, унаследованная экземпляром

    obj.m()         # Присоединить атрибут X к экземпляру
    print(obj.X)    # 55: экземпляр
    print(C.X)      # 33: класс (она же obj.X, если в экземпляре нет X)
